/**
 * 需要该目录下安装node-xlsx依赖   npm install node-xlsx
 */

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init()


const xlsx = require('node-xlsx') //导入Excel类库
const db = cloud.database() //声明数据库对象
const _ = db.command
// exports.main = async (event, context) => {   //主函数入口
//     try {
//         let schoolBusInfo = event.data;
//         console.log(schoolBusInfo);
//         let dataCVS = `schoolBusInfo-${Math.floor(Math.random()*1000000000)}.xlsx`
//         //声明一个Excel表，表的名字用随机数产生
//         let alldata = [];
//         let row = ['车牌号', '日期','部门','姓名','联系方式']; //表格的属性，也就是表头说明对象
//         alldata.push(row);  //将此行数据添加到一个向表格中存数据的数组中
// //接下来是通过循环将数据存到向表格中存数据的数组中
//         for (let key = 0; key<schoolBusInfo.length; key++) {
//             let arr = [];
//             arr.push(schoolBusInfo[key].carNum);
//             arr.push(schoolBusInfo[key].Date);
//             arr.push(schoolBusInfo[key].class);
//             arr.push(schoolBusInfo[key].name);
//             arr.push(schoolBusInfo[key].phone);
//             alldata.push(arr)
//          }
//             var buffer = xlsx.build([{   
//             name: "mySheetName",
//             data: alldata
//             }]); 
//             //将表格存入到存储库中并返回文件ID
//             return await cloud.uploadFile({
//                 cloudPath: dataCVS,
//                 fileContent: buffer, //excel二进制文件
//             })
//     } catch (error) {
//         console.error(error)
//     }
// }


// 云函数入口函数
exports.main = async (event, context) => {
  try {
    let {
      dataList,
      excelName
    } = event

    excelName = "用户体重数据"

    // 1. 定义excel表格名
    let dataCVS = 'test.xlsx'
    // 2. 定义存储数据的
    let alldata = [];
    // 3. 定义表头
    let row = ['日期', "时间", "日期时间", "体重"];

    // 取出集合记录总数
    const countResult = await db.collection("weight").where({
      _openid: _.eq(event.openid)
    }).count()
    let count = countResult.total

    let all_data = []
    // 最多查询100次
    for (let i = 0; i < 100; i++) {
      // 查找数据
      let data = await db.collection("weight").aggregate()
        .match({
          _openid: _.eq(event.openid)
        })
        .sort({
          dateTime: -1,
        })
        .skip(all_data.length)
        .limit(1000) // 限制返回数量为 10 条
        .end()

      all_data = all_data.concat(data.list)
      // 数据取出完成
      if (all_data.length >= count) {
        break
      }
    }



    dataList = all_data


    alldata.push(row);
    // 4. 循环取出姓名数据
    for (let key in dataList) {
      let arr = [];
      arr.push(dataList[key].date);
      arr.push(dataList[key].time + ":00");
      arr.push(dataList[key].date + " " + dataList[key].time + ":00");
      arr.push(dataList[key].weight);
      alldata.push(arr)
    }
    //5. 把数据保存到excel里
    var buffer = await xlsx.build([{
      name: "用户体重数据",
      data: alldata
    }]);
    //6. 把excel文件保存到云存储里
    return await cloud.uploadFile({
      cloudPath: excelName + ".xlsx",
      fileContent: buffer,
    })

  } catch (e) {
    console.error(e)
    return e
  }
}